[高分][紧急]vc2005中CFile::Write的一些使用问题

来源:百度知道 编辑:UC知道 时间:2024/05/17 21:05:36
有如下代码:
...
CString id("Test");
CString code("11");
CString Path("C:\\1.txt");
CFile Fcr.
Fcr.Open(Path,CFile::modeCreate | CFile::modeWrite,0)//文件打开成功
Fcr.Write("Tx",2);
Fcr.Write(" ",1);
Fcr.Write(id,4);
Fcr.Write(" ",1);
Fcr.Write(code,2);
Fcr.Close();
...

则输出的文件结果是:
Tx T e s t 1 1

我明明把id的内容定义为Test 为什么输出的时候是T e s t?
怎样把这些空格删除?
还有code也定义为11 为什么输出的时候是1 1?
如何解决

我使用的是vc2005.

原因:
你的CString 是宽字节的。
Write是按单字节的,没有通过函数转换,故字母之间保留了一个0值的空格。
修改:
1工程配置中选,“使用多字节字符集”
2.不使用CString ,就使用 char*
3.通过调用 WideCharToMultiByte ,将宽字节转换成多字节字符串。

char* p="Test";
CFile f;
f.Open("E:\\1.txt",CFile::modeCreate|CFile::modeReadWrite);
f.Write(p,::strlen(p));

不知为什么我也是这样直接用Write写CString里面的内容,但是结果是正确的

难道是因为VC6.0跟2005的差别?